<?php
/*============================文件说明========================================
@filename:     session.class.php
@description:  保存在线用户session，实现在线用户功能！
@notice:       session过期时间一个小时，因为我们的站点是使用cookie（有效时间是2小时）登录。                 
=============================================================================
*/
namespace Think;

class Sessions {
    
     
     public function __construct() {
        import('Memcachectr');
        $this->m = \Think\Memcachectr::create();
        $this->lasttime=7200;//超时时间：两个小时
         session_set_save_handler(
             array(&$this, 'open'), //在运行session_start()时执行
             array(&$this, 'close'), //在脚本执行完成或调用session_write_close() 或 session_destroy()时被执行,即在所有session操作完后被执行
             array(&$this, 'read'), //在运行session_start()时执行,因为在session_start时,会去read当前session数据
             array(&$this, 'write'), //此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行
             array(&$this, 'destroy'), //在运行session_destroy()时执行
             array(&$this, 'gc') //执行概率由session.gc_probability 和 session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc
         );
         session_start(); //这也是必须的，打开session，必须在session_set_save_handler后面执行
     }
    
     function open($path, $name) {
         return true;
     }
     function close() {
         $this->gc();

         return true;
     }
    function read($session_id){
        return $this->m->get($session_id);
        
    }
     function write($session_id,$arr) {
        $this->m->set($session_id,$arr,true, $this->lasttime);
        return true;
       
     }
    function destroy($session_id) {
      $this->m->delete($session_id);
      
      return true;
    }
    function gc() {
        return true;
    }
}